#ifndef MENU_H
#define MENU_H

#include <vector>
#include <string>
#include <memory>
#include "Student.h"
#include "Course.h"
#include "CourseSelection.h"
#include "FileManager.h"

class Menu {
private:
    std::vector<Student> students;              // 学生列表
    std::vector<Course> courses;                // 课程列表
    std::vector<CourseSelection> selections;    // 选课信息列表
    std::unique_ptr<FileManager> fileManager;   // 文件管理器
    
    // 私有辅助方法
    void displayMainMenu() const;
    void displaySelectionMenu() const;
    void initializeDefaultCourses();            // 初始化默认课程
    
    // 选课管理方法
    void addSelection();
    void displaySelections() const;
    void searchSelection() const;
    void modifySelection();
    void removeSelection();
    void displayAvailableCourses() const;       // 显示可选课程
    
    // 数据管理方法
    void saveData() const;
    void loadData();
    
    // 查找方法
    int findStudentById(const std::string& id) const;
    int findCourseById(const std::string& id) const;
    int findSelection(const std::string& studentId, const std::string& courseId) const;

public:
    // 构造函数
    Menu();
    
    // 运行菜单
    void run();
};

#endif // MENU_H